home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
fb386
/
pickup
/
lsoldier.bas
< prev
next >
Wrap
BASIC Source File
|
1991-10-18
|
8KB
|
219 lines
0 KEY (1) ON :ON KEY (1) GOSUB 65010:PLAY OFF
10 '
20 ' THE LIGHT SOLDIER / by Kazuya Shimada
30 '
40 DEFINT A-Z
50 DIM T(4,9),D(47),V(23)
60 PLAY OFF:BGM 1:LOAD@ "Q:\FJ\PCM\RYM_ALL1.PMB":LOAD@ "Q:\FJ\FM\FM_1.FMB"
70 FOR I=0 TO 13:PART I,I:NEXT I
80 '----
90 GOSUB *READ_DATA
100 ' AF PAN PMS AMS
110 DATA 56, 0, 0, 0, 0, 0, 3, 0, 0, 0
120 ' AR DR SR RR SL TL KS ML DT main
130 DATA 31, 3, 4, 4, 4, 29, 1, 8, 0, 0
140 DATA 31, 5, 2, 4, 4, 31, 1, 2, 0, 0
150 DATA 31, 4, 3, 4, 4, 30, 1, 1, 0, 0
160 DATA 31, 2, 2, 7, 4, 10, 0, 2, 0, 0
170 GOSUB *VOICE_SET:VOICE 1,V,0
180 '----
190 GOSUB *READ_DATA
200 ' AF PAN PMS AMS
210 DATA 56, 0, 0, 0, 0, 0, 3, 0, 0, 0
220 ' AR DR SR RR SL TL KS ML DT chord
230 DATA 31, 0, 1, 5, 1, 31, 1, 2, 0, 0
240 DATA 31, 1, 1, 4, 0, 37, 1, 1, 0, 0
250 DATA 31, 1, 0, 7, 1, 36, 1, 1, 0, 0
260 DATA 31, 1, 2, 9, 1, 8, 1, 2, 3, 0
270 GOSUB *VOICE_SET:VOICE 2,V,0
280 '----
290 GOSUB *READ_DATA
300 ' AF PAN PMS AMS
310 DATA 56, 0, 0, 0, 0, 0, 3, 0, 0, 0
320 ' AR DR SR RR SL TL KS ML DT syn.2
330 DATA 31, 0, 0, 9, 0, 31, 1, 2, 7, 0
340 DATA 31, 0, 0, 9, 0, 25, 1, 2, 7, 0
350 DATA 31, 0, 0, 9, 0, 32, 1, 2, 7, 0
360 DATA 31, 0, 0, 9, 0, 7, 1, 2, 7, 0
370 GOSUB *VOICE_SET:VOICE 3,V,0
380 '----
390 GOSUB *READ_DATA
400 ' AF PAN PMS AMS
410 DATA 27, 0, 0, 0, 0, 0, 3, 0, 0, 0
420 ' AR DR SR RR SL TL KS ML DT e.bass
430 DATA 31, 15, 14, 9, 6, 38, 1, 4, 0, 0
440 DATA 31, 11, 12, 5, 5, 33, 1, 0, 0, 0
450 DATA 31, 8, 7, 5, 3, 33, 1, 1, 3, 0
460 DATA 31, 6, 5, 7, 3, 1, 1, 1, 3, 0
470 GOSUB *VOICE_SET:VOICE 4,V,0
480 '----
490 GOTO 680
500 *VOICE_SET
510 D%(32)=T%(0,0)
520 FOR I%=0 TO 3:J%=I%+1
530 D%( 8+I%)=(T%(J%,8) AND 7)*16+(T%(J%,7) AND 15)
540 D%(12+I%)=(T%(J%,5) AND 127)
550 D%(16+I%)=(T%(J%,6) AND 3)*64+(T%(J%,0) AND 31)
560 D%(20+I%)=T%(J%,1) AND 31
570 D%(24+I%)=T%(J%,2) AND 31
580 D%(28+I%)=(T%(J%,4) AND 15)*16+(T%(J%,3) AND 15)
590 NEXT
600 D%(33)=((T%(0,6) AND 3)*64)+((T%(0,7) AND 3)*16)+((T%(0,8) AND 7)):'D%(34)=0
610 FOR I%=0 TO 47 STEP 2:L&=D%(I%+1)*256+D%(I%)
620 IF L&<&H8000 THEN V%(I%\2)=CINT(L&) ELSE V%(I%\2)=CINT(L&-&H10000)
630 NEXT:RETURN
640 '----
650 *READ_DATA
660 FOR X=0 TO 4:FOR Y=0 TO 9:READ T%(X,Y):NEXT Y:NEXT X
670 RETURN
680 GOSUB 1240
690 T$="T144%CU0Q8"
700 PLAY T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$
710 A0$="V12L8O4F4.CF.G+.>C <B-16G+16GGG+B-2"
720 C0$="L8O4F16&F4.CF.G+.>C <B-16G+16GGG+B-4.&B-16"
730 D0$="@2V12L1O3G+ G"
740 E0$="@2V12L1O4C <B-"
750 F0$="@4V11L16O2(F8>FF<)4 (E-8>E-E-<)4"
760 G0$="@1V15L4O1ARAR ARAR"
770 H0$="@1V15L4O2RERE RERE"
780 I0$="@1V15L16O6((A8AA)4)2"
790 'I0$="@1V15L16O6((AAAA)4)2"
800 A1$="O4E-4.<B->E-.G.B- G+G16F16&F4C+4E-4"
810 C1$="O4E-16&E-4.<B->E-.G.B- G+G16F16&F4C+4E-8."
820 D1$="O3G G+2F4G4"
830 E1$="O3B- >C2<G+4B-4"
840 F1$="O2(E-8>E-E-<)4 (C+8>C+C+<)3E-8>E-E-"
850 G1$="O1ARAR ARAR"
860 H1$="O2RERE RERL16EEEE"
870 A2$="O4F4.CF.G+.>C <B-16G+16GGB->E-2"
880 C2$="O4F16&F4.CF.G+.>C <B-16G+16GGB->E-4.&E-16"
890 A3$="O4E-8<B-8L16B-B->G+G+L8G+GGG+ G.F16F4F4E-4"
900 C3$="O4E-16&E-8<B-8L16B-B->G+G+L8G+GGG+ G.F16F4F4E-8."
910 D3$="O3G E-8.D-2&D-16"
920 E3$="O3B- G8.F2.&F16"
930 F3$="O2(E-8>E-E-<)4 (C+8>C+C+<)4"
940 G3$="O1ARAR ARAR"
950 H3$="O2RERE RER8L16EEEEEE"
960 A4$="O4L8D-4.D-16E-16F.E-.D- G.F.E-G+.G.F"
970 C4$="U120@3V12O4L8D-4.D-16E-16F.E-.D- G.F.E-G+.G.F"
980 D4$="O3F G2F2"
990 E4$="O3G+ B-2G+2"
1000 F4$="O2((D-8>D-D-<)4)2"
1010 A5$="O4G.G+.G&G2 >G.G+.G&G2"
1020 C5$="O4G.G+.G&G2 U0L16CDEF DEFG EFGG+ FGG+B-U80"
1030 D5$="O3E E"
1040 E5$="O3G G"
1050 F5$="O2((C8>CC<)4)2"
1060 A6$="O4L8D-4.D-16E-16F.E-.D- G.F.E-B-.G+.G16F16"
1070 C6$="U120O4L8D-4.D-16E-16F.E-.D- G.F.E-B-.G+.G16F16"
1080 A7$="O4G1 G+2G2"
1090 C7$="O4G1 G+2G2"
1100 D7$="O3E F2E2"
1110 E7$="O3G G+2G2"
1120 F7$="O2(G8>GG<)4G8>GG<G+8>G+G+<A8>AA<B-8>B-B-"
1130 G7$="O1ARAR ARAR"
1140 H7$="O2RER8E8L16EEEE L4REL16EEEEEEEE"
1150 PLAY "@1%R"+A0$,"@1%LU40"+A0$,"@1V8U80"+C0$,D0$,E0$,F0$,G0$,H0$,I0$
1160 PLAY A1$,A1$,C1$,D1$,E1$,F1$,G1$,H1$,I0$
1170 PLAY A2$,A2$,C2$,D0$,E0$,F0$,G0$,H0$,I0$
1180 PLAY A3$,A3$,C3$,D3$,E3$,F3$,G3$,H3$,I0$
1190 PLAY A4$,A4$,C4$,D4$,E4$,F4$,G0$,H0$,I0$
1200 PLAY A5$,A5$,C5$,D5$,E5$,F5$,G1$,H1$,I0$
1210 PLAY A6$,A6$,C6$,D4$,E4$,F4$,G0$,H0$,I0$
1220 PLAY A7$,A7$,C7$,D7$,E7$,F7$,G7$,H7$,I0$
1230 GOTO 1150
1240 GOSUB *SCREEN
1350 I$=INKEY$
1360 IF I$="" THEN 1350
1370 GOSUB *F_OUT:SCREEN@ 1:CLS
1380 PASTEL 128
1390 FOR I=168 TO 0 STEP -1
1400 LINE(0,I)-(319,I-98),PSET,[0,0,255-I]
1410 LINE(0,169*2-I)-(319,169*2-I-98),PSET,[0,0,255-I]
1420 NEXT
1430 CIRCLE(120,188),4,0,2,,,F,PASTEL
1440 CIRCLE(110,160),4,7,,,,F
1450 CIRCLE(113,168),5,7,,,,F
1460 CIRCLE(116,174),3,7,,,,F
1470 CIRCLE(117,177),3,7,,,,F
1480 CIRCLE(118,180),3,7,,,,F
1490 LINE(119,168)-(119,154),PSET,7
1500 PASTEL 64
1510 CIRCLE(113,168),80,[255,128,255],,,,F,PASTEL
1520 SYMBOL(212,232),"THE LIGHT SOLDIER",.7!,.5!,7
1530 RETURN
17000 *SCREEN
17010 SCREEN@ 0 : PALETTE@
17020 FOR I=0 TO 15 : PALETTE I,[0,0,0] : NEXT
17030 COLOR ,%5 : CLS
17040 X=630 : Y=30 : MX=2 : MY=3: R=3 : C1=1 : C2=5 : C3=15 : F=16
17050 ST$="PICK UP TOWNS" : GOSUB *STR_PUT
17060 X=575 : Y=30 : MX=2 : MY=3 : R=3 : C1=1 : C2=5 : C3=15 : F=16
17070 ST$="MUSIC PROGRAM" : GOSUB *STR_PUT
17080 GOSUB *F_IN : FOR I=0 TO 2000 : NEXT
17090 X1=10 : X2=510 : Y1=10 : Y2=460 : C1=1 : C2=6 : C3=15
17100 GOSUB *WAKU
17110 X1=20 : X2=500 : Y1=20 : Y2=90 : C1=15 : C2=7 : C3=5
17120 GOSUB *WAKU
17130 X1=20 : X2=500 : Y1=420 : Y2=450 : C1=15 : C2=7 : C3=5
17140 GOSUB *WAKU
17150 X1=20 : X2=500 : Y1=100 : Y2=410 : C1=15 : C2=7 : C3=5
17160 GOSUB *WAKU
17170 SYMBOL (30,430),"PF1キーを押すと、演奏を中断して音楽MENUに戻ります。",1,1,0,,,1
17180 SYMBOL (30,30)," TITLE ",1,1,0,0,PSET,17
17190 SYMBOL (80,53),"THE LIGHT SOLDIER",1,2,0,0,PSET,1
17200 SYMBOL (30,110)," DATA ",1,1,0,0,PSET,17
17210 SYMBOL (80,140),"Programed by ",1,1,0,0,PSET,1,1
17220 SYMBOL (80,160)," Composed by ",1,1,0,0,PSET,1,1
17230 SYMBOL (30,200)," MESSAGE ",1,1,0,0,PSET,17
17240 'ST$()="・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・"
17250 ST$(0)=" とってもとっても短い曲です、この曲は。何故かというと、"
17260 ST$(1)="思いつかなかったのです。これ以上。でも、僕の一番のお気"
17270 ST$(2)="に入り。(自分で言うな!)"
17280 ST$(3)=" 昔々に作ったので、未熟な曲ですが、目をつぶってやって"
17290 ST$(4)="ください。(今でも未熟だ!)"
17300 ST$(5)=""
17310 ST$(6)="リターンキー、または実行キーを押すと演奏が始まります。"
17320 ST$(7)=""
17330 GOSUB *MESSAGE
17340 RETURN
17350 *STR_PUT
17360 SYMBOL (X,Y),ST$,MX,MY,%C1,R,PSET,F
17370 SYMBOL (X+1,Y),ST$,MX,MY,%C1,R,PSET,F
17380 SYMBOL (X+2,Y),ST$,MX,MY,%C1,R,PSET,F
17390 SYMBOL (X+2,Y-1),ST$,MX,MY,%C1,R,PSET,F
17400 SYMBOL (X+2,Y-2),ST$,MX,MY,%C1,R,PSET,F
17410 SYMBOL (X,Y-2),ST$,MX,MY,%C3,R,PSET,F
17420 SYMBOL (X+1,Y-2),ST$,MX,MY,%C3,R,PSET,F
17430 SYMBOL (X,Y-1),ST$,MX,MY,%C3,R,PSET,F
17440 SYMBOL (X+1,Y-1),ST$,MX,MY,%C2,R,PSET,F
17450 RETURN
17460 *WAKU
17470 LINE (X1+2,Y1+2)-(X2-2,Y2-2),PSET,%C2,BF
17480 CONNECT (X1,Y2)-(X1,Y1)-(X2,Y1),%C3
17490 CONNECT (X1+1,Y2-1)-(X1+1,Y1+1)-(X2-1,Y1+1),%C3
17500 CONNECT (X1+1,Y2)-(X2,Y2)-(X2,Y1+1),%C1
17510 CONNECT (X1+2,Y2-1)-(X2-1,Y2-1)-(X2-1,Y1+2),%C1
17520 RETURN
17530 *MESSAGE
17540 FOR I=0 TO 7
17550 SYMBOL (50,230+20*I),ST$(I),1,1,0,0,PSET,1
17560 NEXT I
17570 RETURN
17580 *F_OUT
17590 FOR I=16 TO 1 STEP -1 : GOSUB *PALETTE : NEXT I :COLOR ,%0: CLS: RETURN
17600 *F_IN
17610 FOR I=1 TO 16 : GOSUB *PALETTE : NEXT I : RETURN
17620 *PALETTE
17630 PALETTE 1,[0*I,0*I,1*I]
17640 PALETTE 2,[1*I,0*I,2*I]
17650 PALETTE 3,[2*I,1*I,3*I]
17660 PALETTE 4,[4*I,2*I,6*I]
17670 PALETTE 5,[8*I,6*I,9*I]
17680 PALETTE 6,[12*I,10*I,13*I]
17690 PALETTE 7,[14*I,13*I,15*I]
17700 PALETTE 15,[15*I,15*I,15*I]
17710 RETURN
65000 BGM 0:PLAY "R64":BGM 1
65010 KEY (1) OFF:PLAY OFF:FOR I=0 TO 13:PART I,I:NEXT:RUN"MENU.BAS"